package com.guigusuqi.app.service;

import com.guigusuqi.app.dto.UserInfoDTO;
import com.guigusuqi.app.entity.DeputyCard;
import com.guigusuqi.app.entity.LoginWxUser;
import com.guigusuqi.app.entity.PO.DeputyCardInfo;
import com.guigusuqi.app.entity.PO.UserCardInfo;
import com.guigusuqi.app.entity.WxUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.guigusuqi.commonutils.vo.Result;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author suqi
 * @since 2022-04-06
 */
public interface WxUserService extends IService<WxUser>
{
    /**
     * 通过openid获取用户信息
     * @param openid
     */
    WxUser getUserInfoByOpenId(String openid);

    /**
     * 通过openid进行登录
     * @param openid
     */
    String wxLogin(String openid);

    /**
     * token合法性校验
     * @param token
     * @return
     */
    LoginWxUser checkAndParseToken(String token);

    /**
     * 修改个人信息
     * @param userInfoDTO
     * @return
     */
    Result modifyUserInfo(UserInfoDTO userInfoDTO) throws IOException;

    /**
     * 查看个人信息
     * @return
     */
    Result selectUserInfo() throws IOException;

    /**
     * 查看是否是主卡用户
     * @param openid
     * @return
     */
    UserCardInfo checkUserIsUserCard(String openid,String phone);

    /**
     * 通过主卡userCardId获取所有副卡
     * @param userCardId
     * @return
     */
    DeputyCardInfo selectDeputyCardByUserCardId(String userCardId);

    /**
     * 查看是否是副卡用户
     * @param openid
     * @return
     */
    DeputyCardInfo checkUserIsDeputyCard(String openid);

    /**
     * 通过副卡用户手机号查询主卡号
     * @param phone
     * @return
     */
    UserCardInfo selectUserCardByDeputyCardPhone(String phone);

    /**
     * 获取会员卡信息
     * @return
     */
    Result getUserCardInfo() throws IOException;
}
